/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.util.*;
import persistencia.PersistenciaArticulo;

/**
 * Clase que representa un juego y que hereda de Articulo
 * @author JAVA
 */
public class Juego extends Articulo{
   
    private String soporte;
    private int edad;
    private String genero;

    public Juego(Date fechaAlta, Proveedor prove, Tarifa tarifa, String titulo, String soporte, int edad, String genero, boolean seVende) {
        super(fechaAlta,prove,true,tarifa,seVende,titulo);
        this.soporte = soporte;
        this.edad = edad;
        this.genero = genero;
    }
/**
     * @param id del juego
     * @param fechaAlta
     * @param proveedor asociado al articulo
     * @param booleano que indica si el articulo se encuentra disponible o no
     * @param tarifa asociada al articulo
     * @param nombre del articulo
     * @param soporte del juego
     * @param edad minima 
     * @param genero del juego
     * @param valoracion asociada al articulo
     * @param boolean que indica si el articulo se vende o no
     */
    public Juego(int id,Date fechaAlta, Proveedor prove,  boolean disponible, Tarifa tarifa, String titulo, String soporte, int edad, String genero,float valoracion, boolean seVende) {
        super(id,fechaAlta,prove,disponible,tarifa,seVende,valoracion,titulo);
        this.soporte = soporte;
        this.edad = edad;
        this.genero = genero;
    }
 
    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }


    public String getSoporte() {
        return soporte;
    }

    public void setSoporte(String soporte) {
        this.soporte = soporte;
    }

    @Override
    public String toString() {
        return "\n --------------- \n ----JUEGOS---- \n --------------- \n"+ " Id: " + super.getId() + "\n Titulo: " + super.getTitulo() + "\n Soporte: " + soporte + "\n Edad: " + edad + "\n Genero: " + genero +"\n Valoracion: " + super.getValoracion() + "\n Disponible:" +super.isDisponible()+ "\n Proveedor: "+ super.getProve().getNombre()+"\n Tarifa: "+ super.getTarifa().getDescripcion()+"\n --------------- \n";
    }

    
    
    public void altaJuego(Juego a1) throws ExcepcionPersistencia {
        
        if (PersistenciaArticulo.insertarJuego(a1) != 1) {
            throw new ExcepcionPersistencia("El juego no se ha dado de alta correctamente");
        }
    }
    
    public static int mostrarJuegos() {
        List<Juego> jue = PersistenciaArticulo.devolverJuego();
        if (jue.isEmpty()) {
            System.out.println("No hay ningun articulo en venta");
        }
        Iterator it = jue.iterator();
        while (it.hasNext()) {
            Juego j = (Juego) it.next();
            System.out.println(j);
        }
        return jue.size();
    }
    
    /**
     * Busca articulos que coincidan con el genero
     * @param genero 
     */
    public static void busquedaGenero(String genero) {
        List<Articulo> lista = PersistenciaArticulo.obtenerArticulos("genero", genero);
        if(lista.isEmpty()){
            System.out.println("No existe ningun genero");
        }
        Iterator it = lista.iterator();
        while (it.hasNext()) {
            Articulo a = (Articulo) it.next();
            System.out.println(a.toString());
        }
    }
     
    /**
     * Busca juegos que coincidan con el soporte
     * @param soporte 
     */
    public static void busquedaJuegoSoporte(String soporte) {
        List<Articulo> lista = PersistenciaArticulo.obtenerArticulos("soporte", soporte);
        if(lista.isEmpty()){
            System.out.println("No existen soportes");
        }
        Iterator it = lista.iterator();
        while (it.hasNext()) {
            Articulo a = (Articulo) it.next();
            System.out.println(a.toString());
        }
    }
    
    /**
     * Carga una lista de juegos cuya valoracion es superior a 5 a traves de Persistencia Articulo
     */
    public static void mostrarMejoresJuegos() {
        List<Articulo> lista = PersistenciaArticulo.mostrarMejorValoradas();
        if (lista.isEmpty()) {
            System.out.println("No hay novedades de este año");
        } else {
            Iterator it = lista.iterator();
            while (it.hasNext()) {
                Articulo art = (Articulo) it.next();
                if (art instanceof Juego) {
                    Juego j = (Juego) art;
                    System.out.println(j);
                }
            }
        }
    }
}
